﻿//题目描述
//给定一个长度为n的整数数组a，你需要求出每个元素的左边离它最近且比它小的元素。
//输入描述
//第一行：一个整数𝑛（1≤n≤2×10^5）
//第二行：
//n个整数，表示整数数组a。（1≤ai​≤10^9）
//输出描述
//共一行，n个整数，表示每个元素的左边第一个比它小的元素，若不存在则为−1。
//输入样例1
//5
//7 8 5 6 7
//输出样例1
//- 1 7 - 1 5 6
//单调栈实现
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5+9;
ll a[N],l[N];
int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int n; cin >> n;
	for (int i = 1; i <= n; i++)cin >> a[i];
	stack<int>stk;
	for (int i = 1; i <= n; ++i) {
		while (stk.size() && stk.top() >= a[i]) stk.pop();
		if (stk.empty())
			l[i] = -1;
		else
			l[i]= stk.top();
		stk.push(a[i]);
	}
	for (int i = 1; i <= n; i++)cout << l[i] << " ";
	return 0;
}